package com.yuantu.judiciary.service;

import com.wechat.pay.java.service.payments.jsapi.model.PrepayWithRequestPaymentResponse;
import com.yuantu.judiciary.model.form.*;
import com.yuantu.judiciary.model.vo.*;
import org.springframework.data.domain.Pageable;

import javax.servlet.http.HttpServletRequest;
import java.util.List;
import java.util.Map;

/**
 * 套餐订单模块
 *
 * @author syw
 * @since 2023-08-14
 **/
public interface IVipOrderService {

    AddOrderVO add(Long accountId, AddOrderForm form);

    PrepayWithRequestPaymentResponse getParam(Long accountId, Long id);

    Map<String, Object> callOrder(HttpServletRequest request);


    AddOrderVO addShare(Long accountId, Long memberCardId);

    PrepayWithRequestPaymentResponse getParamShare(Long accountId, Long id);

    Map<String, Object> callOrderShare(HttpServletRequest request);

    PageVO<OrderVO> getList(Long accountId, Pageable pageable);

    OrderDetailVO get(Long id);

    Boolean addInvoice(AddInvoiceForm form);

    PageVO<InvoiceVO> getInvoiceList(Long accountId, Pageable pageable);

    PageVO<OrderPageVO> searchPage(SearchOrderForm form, Pageable pageable);

    Boolean modifyInvoice(Long id);

    String addByAlipay(Long accountId, AddOrderForm form);

    String callOrderByAlipay(HttpServletRequest request);

    String addByAlipayWap(Long accountId, Long memberCardId);

    String callOrderByAlipayWap(HttpServletRequest request);

    String addByAlipayTimeWap(Long accountId, Long memberCardId, Long monitorRecordId);

    String callTimeOrderByAlipayWap(HttpServletRequest request);

    AddAlipayAppletVO addByAlipayApplet(Long accountId, AddOrderByAlipayAppletForm form);

    AddAlipayAppletVO addByAlipayAppletMembershipCard(Long accountId, AddOrderForMembershipCardForm form);

    String callOrderByAlipayApplet(HttpServletRequest request);

    String callOrderByAlipayAppletForMembershipCard(HttpServletRequest request);

    List<MembershipCardSimpleVO> getMembershipCardOrderInfo(Integer cardType);

    String addByAlipayQrcode(Long accountId, AddOrderForm form);

    String callOrderByAlipayQrcode(HttpServletRequest request);

    String addByAlipayQrcodeTest();

    void testQuery(Long orderId);

    Boolean getMembershipCardShowInfo();

    com.wechat.pay.java.service.payments.h5.model.PrepayResponse createPayPage(Long accountId, PayPageInfoVO payPageInfo);

}
